package com.baseframe.sys.service;


import java.util.List;

import com.baseframe.sys.entity.FrameModule;
import com.baseframe.sys.entity.FrameModulePrivilege;


/**
 * 菜单管理
 *
 * @author chenjia ghoulbfo@gmail.com
 * @date 2016年9月18日 上午9:42:16
 */
public interface IFrameModuleService {

    /**
     * 获取所有菜单
     *
     * @return List<SysMenu>
     */
    List<FrameModule> selectList();

    /**
     * 根据id，获取对象
     *
     * @param menuId 菜单id
     * @return 菜单实体
     */
    FrameModule selectById(String menuId);

    /**
     * 根据父菜单，查询子菜单
     *
     * @param parentId   父菜单ID
     * @param menuIdList 用户菜单ID
     * @return List<SysMenu>
     */
    List<FrameModule> queryListParentId(String parentId, List<String> menuIdList);

    /**
     * 根据父菜单，查询子菜单
     *
     * @param parentId 父菜单ID
     * @return List<SysMenu>
     */
    List<FrameModule> queryListParentId(String parentId);

    /**
     * 获取不包含按钮的菜单列表
     *
     * @return List<SysMenu>
     */
    List<FrameModule> queryNotButtonList();

    /**
     * 获取用户菜单列表
     *
     * @param userId 用户ID
     * @return List<SysMenu>
     */
    List<FrameModule> getUserMenuList(String userId);

    /**
     * 删除
     *
     * @param menuId 菜单ID
     */
    void delete(String menuId);

    /**
     * 新增菜单
     *
     * @param frameModule 菜单对象
     */
    void insert(FrameModule frameModule);

    /**
     * 更新菜单
     *
     * @param frameModule 菜单对象
     */
    void update(FrameModule frameModule);

    /**
     * 根据roleType查找到菜单权限表
     * @param roleType
     * @return
     */
    List<FrameModulePrivilege> findByAllowtype(String roleType);

    /**
     * 通过moduleGuid和roleType删除菜单
     * @param moduleGuid
     * @param roleType
     * @return
     */
    int deleteByModuleguidAndAllowtype(String moduleGuid, String roleType);

    /**
     * 保存菜单权限关系
     * @param frameModulePrivilege
     * @return
     */
    void save(FrameModulePrivilege frameModulePrivilege);
}
